﻿#region Using Statements
using System.Collections.Generic;
#endregion

namespace StarFox
{
    /// <summary>
    /// Specifies the path to every asset used in the game.
    /// </summary>
    public static class ContentSettings
    {
        /// <summary>
        /// Relates an asset identifier with the path to its corresponding asset file. 
        /// </summary>
        /// <param name="assetName">Identifier of the asset defined in the game.</param>
        /// <returns>Path to the asset file, relative to the loader root directory, not including the .xnb extension.</returns>
        public static string GetAsset(string assetName)
        {
            string result;

            if (dictionary.TryGetValue(assetName, out result))
                return result;
            else
                return null;
        }

        static Dictionary<string, string> dictionary = new Dictionary<string, string>()
        {
            /* GLOBAL CONTENT */

            // fonts
            {"FONT_SMALL", @"Screens\Fonts\FONT_SMALL"},
            {"FONT_BIG", @"Screens\Fonts\FONT_BIG"},
            
            // menu sprites
            {"MENU_SPRITES", @"Screens\Textures\MENU_SPRITES"},

            // post-processing
            {"DISPLAY_EFFECT", @"Graphics\DISPLAY_EFFECT"},
            {"MOTIONBLUR_EFFECT", @"Graphics\MOTIONBLUR_EFFECT"},
            {"POSTBLOOM_EFFECT", @"Graphics\POSTBLOOM_EFFECT"},
            {"SCREENBORDER_FADEOUT", @"Graphics\SCREENBORDER_FADEOUT"},

            // menu background
            {"BACKGROUND_EFFECT", @"ScreenComponents\Background\BACKGROUND_EFFECT"},
            {"BACKGROUND_TEXTURE", @"ScreenComponents\Background\BACKGROUND_TEXTURE"},

            /* Per-Screen Content - Intro Screens */
            
            // intro sprites
            {"INTRO_SPRITES", @"Screens\Textures\INTRO_SPRITES"},            
            
            /* Per-Screen Content - Gameplay Screen */
            
            // head-up display
            {"HUD_SPRITES", @"ScreenComponents\HUD\HUD_SPRITES"},

            // screen messages
            {"BROKEN_GLASS_01", @"ScreenComponents\Messages\BROKEN_GLASS_01"},
            {"BROKEN_GLASS_02", @"ScreenComponents\Messages\BROKEN_GLASS_02"},
            {"BROKEN_GLASS_03", @"ScreenComponents\Messages\BROKEN_GLASS_03"},
            {"GLOW_EFFECT", @"ScreenComponents\Messages\GLOW_EFFECT"},
            {"MSG_SPRITES", @"ScreenComponents\Messages\MSG_SPRITES"},

            // skybox
            {"SKYBOX_EFFECT",  @"ScreenComponents\SkyBox\SKYBOX_EFFECT"},
            {"SKYBOX_TEXTURE", @"ScreenComponents\SkyBox\SKYBOX_TEXTURE"},

            // lens-flare
            {"LENSFLARE_SPRITES", @"ScreenComponents\LensFlare\LENSFLARE_SPRITES"},

            // particles
            {"PARTICLES_EFFECT", @"ScreenComponents\Particles\PARTICLES_EFFECT"},
            {"PARTICLES_TEXTURE", @"ScreenComponents\Particles\PARTICLES_TEXTURE"},

            // asteroids - high detail
            {"ASTEROID_01_HIGH", @"ScreenComponents\Asteroids\ASTEROID_01_HIGH"},
            {"ASTEROID_02_HIGH", @"ScreenComponents\Asteroids\ASTEROID_02_HIGH"},
            {"ASTEROID_03_HIGH", @"ScreenComponents\Asteroids\ASTEROID_03_HIGH"},

            // asteroids - low detail
            {"ASTEROID_01_LOW", @"ScreenComponents\Asteroids\ASTEROID_01_LOW"},
            {"ASTEROID_02_LOW", @"ScreenComponents\Asteroids\ASTEROID_02_LOW"},
            {"ASTEROID_03_LOW", @"ScreenComponents\Asteroids\ASTEROID_03_LOW"},

            // small asteroids
            {"SMALL_ASTEROID_01", @"ScreenComponents\Asteroids\SMALL_ASTEROID_01"},
            {"SMALL_ASTEROID_02", @"ScreenComponents\Asteroids\SMALL_ASTEROID_02"},
            {"SMALL_ASTEROID_03", @"ScreenComponents\Asteroids\SMALL_ASTEROID_03"},

            // power-ups - high detail
            {"BOMB_HIGH", @"ScreenComponents\PowerUp\BOMB_HIGH"},
            {"BOOST_HIGH", @"ScreenComponents\PowerUp\BOOST_HIGH"},
            {"FUEL_HIGH", @"ScreenComponents\PowerUp\FUEL_HIGH"},
            {"HEALTH_HIGH", @"ScreenComponents\PowerUp\HEALTH_HIGH"},
            {"LIFE_HIGH", @"ScreenComponents\PowerUp\LIFE_HIGH"},

            // power-ups - low detail
            {"BOMB_LOW", @"ScreenComponents\PowerUp\BOMB_LOW"},            
            {"BOOST_LOW", @"ScreenComponents\PowerUp\BOOST_LOW"},            
            {"FUEL_LOW", @"ScreenComponents\PowerUp\FUEL_LOW"},            
            {"HEALTH_LOW", @"ScreenComponents\PowerUp\HEALTH_LOW"},            
            {"LIFE_LOW", @"ScreenComponents\PowerUp\LIFE_LOW"},

            // power-ups - glow
            {"POWER_UP_GLOW", @"ScreenComponents\PowerUp\POWER_UP_GLOW"},

#if DEBUG
            // testing
            {"FONT_TEST", @"Testing\FONT_TEST"},
            {"BOUNDING_SPHERE", @"Testing\BOUNDING_SPHERE"},
#endif
        };
    }
}
